package com.redhat.ceylon.eclipse.core.classpath;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.jdt.core.ClasspathContainerInitializer;
import org.eclipse.jdt.core.IClasspathContainer;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
/**
* Initializes a classpath container for the Ceylon language runtime archive.
*/
public class CeylonLanguageModuleInitializer extends ClasspathContainerInitializer {
/**
* @see ClasspathContainerInitializer#initialize(IPath, IJavaProject)
*/
public void initialize(IPath containerPath, IJavaProject project) throws CoreException {
int size = containerPath.segmentCount();
if (size > 0) {
if (containerPath.segment(0).equals(CeylonLanguageModuleContainer.CONTAINER_ID)) {
CeylonLanguageModuleContainer container = new CeylonLanguageModuleContainer(project.getProject());
JavaCore.setClasspathContainer(containerPath, new IJavaProject[] {project}, new IClasspathContainer[] {container}, null);
}
}
}
/**
* Sets the specified class path container for all of the given projects.
*
* @param containerPath JRE container path
* @param projects projects set the container on
* @throws CoreException on failure
*/
public void initialize(IPath containerPath, IJavaProject[] projects) throws CoreException {
int size = containerPath.segmentCount();
if (size > 0) {
if (containerPath.segment(0).equals(CeylonLanguageModuleContainer.CONTAINER_ID)) {
int length = projects.length;
IClasspathContainer[] containers = new CeylonLanguageModuleContainer[length];
for (int i=0; i<length; i++) {
containers[i] = new CeylonLanguageModuleContainer(projects[i].getProject());
}
JavaCore.setClasspathContainer(containerPath, projects, containers, null);
}
}
}
/**
* The container cannot be updated.
*
* @see org.eclipse.jdt.core.ClasspathContainerInitializer#canUpdateClasspathContainer(org.eclipse.core.runtime.IPath, org.eclipse.jdt.core.IJavaProject)
*/
public boolean canUpdateClasspathContainer(IPath containerPath, IJavaProject project) {
return false;
}
/**
* @see org.eclipse.jdt.core.ClasspathContainerInitializer#getDescription(org.eclipse.core.runtime.IPath, org.eclipse.jdt.core.IJavaProject)
*/
public String getDescription(IPath containerPath, IJavaProject project) {
return "Initializer for the Ceylon Language Module Classpath Container of project " + project.getElementName();
}
public Object getComparisonID(IPath containerPath, IJavaProject project) {
return project.getProject().getName() + "/" + containerPath;
}
}